﻿#pragma once

#include <cstdint>
#include <memory>
#include <vector>

namespace asycipc {

class PipeHandle {
 public:
  virtual ~PipeHandle() = default;
  virtual void Write(const std::vector<uint8_t>& data) = 0;
  virtual std::vector<uint8_t> Read() = 0;
};

class PipeListener {
 public:
  virtual ~PipeListener() = default;
  virtual std::unique_ptr<PipeHandle> Accept() = 0;
};

using PipeHandlePtr = std::unique_ptr<PipeHandle>;

}  // namespace asycipc
